package model

import (
	"time"
)

// AdventureRecord 历练记录模型
// 记录每次历练的详细信息，包括故事内容、选择和奖励
type AdventureRecord struct {
	ID                int64     `json:"id" gorm:"primaryKey;autoIncrement"`
	UserID            int64     `json:"user_id" gorm:"not null;index"`
	AdventureType     string    `json:"adventure_type" gorm:"size:50;not null;index"` // 奇遇类型
	Title             string    `json:"title" gorm:"size:200"`                        // 奇遇标题
	StoryContent      string    `json:"story_content" gorm:"type:text;not null"`      // AI生成的故事
	Scene             string    `json:"scene" gorm:"size:100"`                        // 场景类型
	PlayerChoice      int       `json:"player_choice" gorm:"default:0"`               // 玩家选择的选项ID
	ChoicesData       string    `json:"choices_data" gorm:"type:json"`                // 选择项数据(JSON)
	RewardsData       string    `json:"rewards_data" gorm:"type:json"`                // 奖励数据(JSON)
	CultivationGained int64     `json:"cultivation_gained" gorm:"default:0"`          // 获得的修为
	ItemsGainedData   string    `json:"items_gained_data" gorm:"type:json"`           // 获得的物品(JSON)
	SpiritStoneGained int64     `json:"spirit_stone_gained" gorm:"default:0"`         // 获得的灵石
	Success           bool      `json:"success" gorm:"default:true"`                  // 是否成功
	CreatedAt         time.Time `json:"created_at"`
}

// AdventureChoice 历练选择
// 表示在历练中玩家可以做出的选择
type AdventureChoice struct {
	ID              int      `json:"id"`                // 选择ID
	Text            string   `json:"text"`              // 选择描述
	RiskLevel       string   `json:"risk_level"`        // 风险等级: low, medium, high
	SuccessRate     int      `json:"success_rate"`      // 成功率(0-100)
	PossibleRewards []string `json:"possible_rewards"`  // 可能的奖励描述
}

// AdventureReward 历练奖励
// 表示历练后获得的奖励
type AdventureReward struct {
	Cultivation  int64                `json:"cultivation"`   // 修为奖励
	SpiritStones int64                `json:"spirit_stones"` // 灵石奖励
	Items        []AdventureRewardItem `json:"items"`         // 物品奖励
	Experience   string               `json:"experience"`    // 经验描述
}

// AdventureRewardItem 物品奖励
type AdventureRewardItem struct {
	ItemID   int64  `json:"item_id"`   // 物品ID
	ItemName string `json:"item_name"` // 物品名称
	Quantity int    `json:"quantity"`  // 数量
}

// AdventureStory AI生成的奇遇故事
// 包含完整的奇遇信息
type AdventureStory struct {
	AdventureID string             `json:"adventure_id"` // 奇遇唯一ID
	Story       AdventureStoryData `json:"story"`        // 故事内容
	Choices     []AdventureChoice  `json:"choices"`      // 可选择项
	Context     AdventureContext   `json:"context"`      // 上下文信息
}

// AdventureStoryData 故事数据
type AdventureStoryData struct {
	Title   string `json:"title"`   // 标题
	Content string `json:"content"` // 故事内容
	Scene   string `json:"scene"`   // 场景
	Mood    string `json:"mood"`    // 氛围：神秘、危险、平和等
}

// AdventureContext 历练上下文
// 用于传递给AI的用户信息
type AdventureContext struct {
	UserID         int64  `json:"user_id"`
	Realm          string `json:"realm"`          // 当前境界
	RealmLevel     int    `json:"realm_level"`    // 境界层数
	Talent         int    `json:"talent"`         // 根骨
	Comprehension  int    `json:"comprehension"`  // 悟性
	Luck           int    `json:"luck"`           // 运气
	AdventureCount int    `json:"adventure_count"` // 历练次数
	LastAdventure  string `json:"last_adventure"` // 上次历练简述
}

// AdventureResult 历练结果
// 表示用户选择后的结果
type AdventureResult struct {
	Success     bool            `json:"success"`      // 是否成功
	Description string          `json:"description"`  // 结果描述
	Reward      AdventureReward `json:"reward"`       // 获得的奖励
	Consequence string          `json:"consequence"`  // 后果描述
	NextHint    string          `json:"next_hint"`    // 下次提示
}
